from lenet import LeNetModel
import paddle
from PIL import Image
import numpy as np

# 加载指定路径下的图像
im = Image.open('./2-cnn/data/0.jpg').convert('L')
# 将图像转化为28*28的格式
im = im.resize((28, 28),Image.LANCZOS)
# 将图像数据转化为1*1*28*28的32位浮点数
img = np.array(im).reshape(1, 1, 28, 28).astype('float32')
# 图像归一化
img = 1.0 - img / 255

# 定义预测过程
model = LeNetModel()

# 加载模型参数
params_file_path = './2-cnn/mnist-cnn.pdparams'
param_dict = paddle.load(params_file_path)
model.load_dict(param_dict)

# 输入数据
model.eval()
tensor_img = img
# 模型反馈10个类别标签的对应概率
results = model(paddle.to_tensor(tensor_img))
# 取概率最大的标签作为预测结果
lab = np.argsort(results.numpy())
print("本次预测的数字是:", lab[0][-1])